import pickle
import plotly.graph_objects as go
import plotly.io as pio
import pandas as pd
import itertools
from matplotlib import path
import numpy as np
import os
from matplotlib import path
import json
mapbox_access_token="pk.eyJ1IjoibWRraGF0YW1pIiwiYSI6ImNqc2Q3MDBlZzBjdTYzeXRsbmtuN2JmYTAifQ.DmiQnVUdDKAV2G2uZppE3g"
geoData=json.load(open('bezirksgrenzen.geojson'))
regionsPDict={}
for i in range(len(geoData['features'])):
tmpDf=pd.DataFrame(data=geoData['features'][i]['geometry']['coordinates'][0][0],columns=['lon','lat'])
region_id=int(geoData['features'][i]['properties']['Gemeinde_schluessel'])
tmpDf['region_id']=region_id
tmpDf['region_name']=geoData['features'][i]['properties']['Gemeinde_name']
if i==0:
regionsDF=tmpDf
else:
regionsDF=pd.concat([regionsDF,tmpDf])
regionsPDict[region_id]=path.Path(geoData['features'][i]['geometry']['coordinates'][0][0])
dfDict={}
regionsList=np.arange(1,13)
print(regionsList)
connectivityG=np.zeros(shape=(len(regionsList),len(regionsList)))
for df_id in range(1,2):
file_name='berlin/dict_berlin_2019_06_0'+str(df_id)+'.p'
if os.path.exists(file_name):
dfDict[df_id]={}
dfL=pickle.load(open(file_name,'rb'))
df=dfL[0]
PL=dfL[1]
PL_distance=dfL[2]
for r1ID in regionsList:
dfDict[df_id][r1ID]={}
for r2ID in regionsList:
if r2ID>=r1ID:
s1=set(PL[regionsPDict[r1ID].contains_points(PL[['lon','lat']])].PathID)
s2=set(PL[regionsPDict[r2ID].contains_points(PL[['lon','lat']])].PathID)
s=s1&s2
connectivityG[r1ID-1,r2ID-1]+=len(s)
dfDict[df_id][r1ID][r2ID]=df[df['PathID'].isin(s)]
else:
print(file_name," doesn't exist")
print(connectivityG)
pickle.dump(dfDict,open('berlin/dfDict.p','wb'))
np.save('berlin/connectivityG', connectivityG)
import pickle
import plotly.graph_objects as go
import plotly.io as pio
import pandas as pd
import itertools
from matplotlib import path
import numpy as np
import os
from matplotlib import path
import json
mapbox_access_token="pk.eyJ1IjoibWRraGF0YW1pIiwiYSI6ImNqc2Q3MDBlZzBjdTYzeXRsbmtuN2JmYTAifQ.DmiQnVUdDKAV2G2uZppE3g"
geoData=json.load(open('bezirksgrenzen.geojson'))
regionsPDict={}
r1ID=1
r2ID=10
df_id=1
for i in range(len(geoData['features'])):
tmpDf=pd.DataFrame(data=geoData['features'][i]['geometry']['coordinates'][0][0],columns=['lon','lat'])
region_id=int(geoData['features'][i]['properties']['Gemeinde_schluessel'])
tmpDf['region_id']=region_id
tmpDf['region_name']=geoData['features'][i]['properties']['Gemeinde_name']
if i==0:
regionsDF=tmpDf
else:
regionsDF=pd.concat([regionsDF,tmpDf])
regionsPDict[region_id]=path.Path(geoData['features'][i]['geometry']['coordinates'][0][0])
dfDict=pickle.load(open('berlin/dfDict.p','rb'))
mydf=dfDict[df_id][r1ID][r2ID].copy()
print(len(df['PathID'].unique().tolist()))
df=mydf.copy()
lon=df['lon'].mean()
lat=df['lat'].mean()
regions=regionsDF[regionsDF['region_id'].isin([r1ID,r2ID])]
jelbiArr=[[52.499258, 13.407773],
[52.554145, 13.416526],
[52.544389, 13.295859],
[52.529869, 13.449394],
[52.453640, 13.385650]]
jelbi=pd.DataFrame(jelbiArr,columns=['lat','lon'])
fig = go.Figure([
go.Scattermapbox(
lat=df['lat'],
lon=df['lon'],
text=df['ltime'],
mode='markers',
marker=go.scattermapbox.Marker(size=2,color=df['PathID'],colorbar={'thickness': 10}),
name='df'),
go.Scattermapbox(
lat=regions['lat'],
lon=regions['lon'],
text=regions['region_id'],
mode='markers',
marker=go.scattermapbox.Marker(size=3,colorbar={'thickness': 10}),
name='df2'),
go.Scattermapbox(
lat=jelbi['lat'],
lon=jelbi['lon'],
mode='markers',
marker=go.scattermapbox.Marker(size=20),
name='df2')])
fig.update_layout(
hovermode='closest',
showlegend=False,
dragmode='zoom',
height=1500,
mapbox=go.layout.Mapbox(
accesstoken=mapbox_access_token,
bearing=0,
center=go.layout.mapbox.Center(
lat=lat,
lon=lon
),
pitch=0,
zoom=10
)
)
fig.show()